package com.antrain.his.controller;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import com.antrain.his.annotation.UserLoginToken;
import com.antrain.his.entity.Constantitem;
import com.antrain.his.service.IConstantitemService;
import com.antrain.his.utils.InitUtil;
import com.antrain.his.utils.Result;
import com.antrain.his.utils.ResultGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  常数项 前端控制器
 * </p>
 *
 * @author antrain
 * @since 2020-09-09
 */
@RestController
@RequestMapping("/constantItems")
public class ConstantitemController {

  @Resource
  private IConstantitemService constantItemService;

  @GetMapping
  public Result getlist(@RequestParam Map<String, Object> param) {
      InitUtil.initPage(param);
      int num = Integer.parseInt(param.get("page").toString());
      int limit = Integer.parseInt(param.get("limit").toString());
      QueryWrapper<Constantitem> wrapper = new QueryWrapper<>();
      InitUtil.initLike(param, wrapper, "ConstantName");
      IPage<Constantitem> page = new Page<>(num, limit);
      return ResultGenerator.getSuccessResult(constantItemService.page(page, wrapper));
  }

  @GetMapping("/{id}")
  public Result getConstantitem(@PathVariable int id) {
      Constantitem constantItem = constantItemService.getById(id);
      if (constantItem == null)
          return ResultGenerator.getFailResult("", "无常数类别记录");
      return ResultGenerator.getSuccessResult(constantItem);
  }

  @GetMapping("/check")
  public Result checkCode(@RequestParam String code) {
      QueryWrapper<Constantitem> wrapper = new QueryWrapper<>();
      wrapper.eq("ConstantCode", code);
      Constantitem constantItem = constantItemService.getOne(wrapper);
      if (constantItem != null)
          return ResultGenerator.getFailResult("", "该常数项编码已存在");
      return ResultGenerator.getSuccessResult();
  }

  @PostMapping()
  @UserLoginToken
  public Result save(@RequestBody Constantitem constantItem) {
      if (constantItemService.save(constantItem))
          return ResultGenerator.getSuccessResult("", "添加成功");
      return ResultGenerator.getFailResult("", "添加失败");
  }

  @PutMapping("/{id}")
  @UserLoginToken
  public Result update(@RequestBody Constantitem constantItem, @PathVariable int id) {
      constantItem.setId(id);
      // System.out.println(constantItem);
      if (constantItemService.updateById(constantItem))
          return ResultGenerator.getSuccessResult("", "更新成功");
      return ResultGenerator.getFailResult("", "更新失败");
  }

  @DeleteMapping("/{id}")
  @UserLoginToken
  public Result del(@PathVariable int id) {
      if (constantItemService.removeById(id))
          return ResultGenerator.getSuccessResult("", "删除成功");
      return ResultGenerator.getFailResult("", "删除失败");
  }

  @DeleteMapping("/batchdel")
  @UserLoginToken
  public Result batchDel(@RequestParam String ids) {
      String[] idList = ids.split(",");
      List<Integer> list = new ArrayList<>(idList.length);
      for (String id : idList) {
          list.add(Integer.parseInt(id));
      }
      if (constantItemService.removeByIds(list))
          return ResultGenerator.getSuccessResult("", "删除成功");
      return ResultGenerator.getFailResult("", "删除失败");
  }

}
